Aspects of the present invention relate to memory storage and retrieval. Memory storage devices are used in many modern devices, including personal computers, cameras and web servers. Removable storage such as memory sticks, multimedia cards, and CompactFlash are useful not only for storing the information but for moving the data between different devices. In either case, these storage devices may contain a variety of data including images, sound and experimental data.
Many times, content in these data files are subject to various types of computation-intensive processing. For example, digital cameras read image data from an image sensor, compress the image as JPEG, MPEG or another format and then store the resulting compressed version of the image in a memory device. The compressed version of the image takes less storage and requires less communication bandwidth to transport yet has increased computational requirements.
Reading compressed images and data takes time as the entire image is read from memory, uncompressed and then viewed as a series of successive refinements in resolution. Latency for viewing a batch of images on a camera or other device using flash type memory is often noticeable due to the slow access times of this medium. Often the image is displayed briefly for a user to decide whether to delete, download or transfer the image from the camera to a computer or other device. Unfortunately, the fine details of an image—which take time to access and generate—are often discarded once the user has made a selection.
One conventional approach to this problem is to create a thumbnail copy of the image for quicker access. Thumbnails are useful for display in an image directory or use in dynamically-formatted web pages. However, thumbnails require the allocation of additional memory for each of the underlying images. Further, having multiple copies of the same image (i.e., one full scale image and a thumbnail copy) requires tracking changes from the full scale image and propagating those changes between the two or more versions of the same image. Tracking the images and making sure the thumbnails are updated to accurately reflect the full scale image requires additional processing and data management. Additionally, the resolution of both the thumbnail and the full version may also need to be scaled to the display, bandwidth and processing capabilities of different applications and display devices.
An image displayed by successive refinement propagation appears first in low-resolution and then in successively finer resolution as more image data arrives. Wavelet compression achieves this successive refinement from a coarse resolution image to a fine version without a significant burden on the transmission resources and network. However, wavelet compression does have significant computational requirements on the devices involved in these refinement operations.
Conventional datastorage and retrieval burden general-purpose processors and dedicated computing hardware with compression, decompression, thumbnail creation and many other tasks. This reduces the processor cycles available to perform other tasks or requires more powerful processors with increased device complexity, power consumption and cost.